Computer systems are driven by machine-readable instructions encoded in binary format, wherein the encoding depends on the hardware platform executing the instructions, and ultimately, according to an instruction set of a platform processor. Humans, however, often design programs according to human understandable/readable computer instructions in the form of source code, wherein compilers, or other tools such as assemblers, convert the source code into machine-readable instructions. These tools have steadily increased in performance and sophistication as technology has advanced. As one example, a standard native or static compiler generally inputs all available source code for a particular program and generates an executable image of instructions for a particular hardware platform. As program sizes and the amount of source code increases, however, the time to compile large code sources can become excessive. Thus, costs associated with developing large programs can increase as the size of the program increases for no other reason than time is expended waiting for the compiler to complete or build executable code images. This problem can be exacerbated when a small change in a source program requires a re-compilation of some, if not all portions of the entire source program.
Another issue relating to static compilers is that a separate compiler and subsequent compilation process may be required for each hardware platform that a particular source program is to be executed on. Thus, a program written in C++ to be operated on a desktop personal computer would likely be re-compiled by a different compiler in order to operate in a workstation UNIX environment, for example. In order to address compile time and re-compilation issues, other types of compilers and execution models have been developed. As an example, intermediate language compilers have been developed that convert source code written in many different languages (e.g., C++, BASIC, Pascal) to an intermediate language that operates in a virtual environment sometimes referred to as a virtual machine. This provides a layer of abstraction to the source code that enables a single code source to execute on multiple hardware platforms and operating environments. Thus, the virtual machine converts the intermediate language into the particular instructions required of the platform. Although platform independence and reduced development time is generally achieved by this model, some program performance is sacrificed when converting the intermediate language to machine-dependent instructions. Thus, a tradeoff exists between higher performance program operations provided by standard native compilers and the compilation and development time benefits provided by intermediate language systems. Consequently, there is a need for a system and methodology to provide program performance approaching that of native compiled systems while also providing the development benefits of intermediate language systems.